System.Collections.Generic.HashSet<T> – třída
Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.
Třída HashSet<T> poskytuje vysoce výkonné operace sady. Sada je kolekce, která neobsahuje žádné duplicitní prvky a jejichž prvky nejsou v žádném konkrétním pořadí.
Kapacita objektu HashSet<T> je počet prvků, které může objekt obsahovat. HashSet<T> Kapacita objektu se automaticky zvyšuje při přidání prvků do objektu.
Třída HashSet<T> je založená na modelu matematických sad a poskytuje operace s vysokou úrovní výkonu podobné přístupu ke klíčům Dictionary<TKey,TValue> v kolekcích nebo Hashtable kolekcích. Jednoduše řečeno, HashSet<T> třída může být považována Dictionary<TKey,TValue> za kolekci bez hodnot.
HashSet<T> Kolekce není seřazená a nemůže obsahovat duplicitní prvky. Pokud je duplikace pořadí nebo elementu pro vaši aplikaci důležitější než výkon, zvažte použití List<T> třídy společně s metodou Sort .
HashSet<T> poskytuje mnoho matematických operací sady, jako je sčítání sady (sjednocení) a odčítání sady. Následující tabulka uvádí zadané HashSet<T> operace a jejich matematické ekvivalenty.
Operace HashSet | Matematický ekvivalent |
---|---|
UnionWith | Sjednocení nebo nastavení sčítání |
IntersectWith | Průsečíku |
ExceptWith | Nastavení odčítání |
SymmetricExceptWith | Symetrický rozdíl |
Kromě uvedených operací HashSet<T> sady třída také poskytuje metody pro určení rovnosti sady, překrytí sad a zda je sada podmnožinou nebo nadmnožinou jiné sady.
Pouze rozhraní .NET Framework: Pro velmi velké HashSet<T> objekty můžete zvýšit maximální kapacitu na 2 miliardy prvků v 64bitovém systému nastavením enabled
atributu <gcAllowVeryLargeObjects>
elementu konfigurace do true
prostředí za běhu.
Třída HashSet<T> implementuje rozhraní ISet<T>.
Operace hashset a sady LINQ
LINQ poskytuje přístup k , Distinct
, Union
Intersect
a Except
nastavit operace pro jakýkoli zdroj dat, který implementuje IEnumerable nebo IQueryable rozhraní. HashSet<T> poskytuje větší a robustnější kolekci operací sady. Například poskytuje porovnání, HashSet<T> například IsSubsetOf a IsSupersetOf.
Hlavním rozdílem mezi operacemi a operacemi HashSet<T> sady LINQ je, že operace sady LINQ vždy vrací novou IEnumerable<T> kolekci, zatímco HashSet<T> ekvivalentní metody upravují aktuální kolekci.
Pokud obvykle musíte vytvořit novou sadu nebo pokud vaše aplikace potřebuje přístup pouze k zadaným operacím sady, bude stačit použití operací sady LINQ pro libovolnou IEnumerable<T> kolekci nebo pole. Pokud však vaše aplikace vyžaduje přístup k dalším operacím sady nebo pokud není žádoucí nebo nutné vytvořit novou kolekci, použijte HashSet<T> třídu.
Následující tabulka ukazuje HashSet<T> operace a jejich ekvivalentní operace sady LINQ.
Operace HashSet | Ekvivalent LINQ |
---|---|
UnionWith | Union |
IntersectWith | Intersect |
ExceptWith | Except |
Není k dispozici. | Distinct |
SymmetricExceptWith | Není k dispozici. |
Overlaps | Není k dispozici. |
IsSubsetOf | Není k dispozici. |
IsProperSubsetOf | Není k dispozici. |
IsSupersetOf | Není k dispozici. |
IsProperSupersetOf | Není k dispozici. |
SetEquals | Není k dispozici. |